package br.com.academy.dao;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import br.com.academy.entidades.DadosPessoais;

@Stateless
public class DadosPessoaisDao {
	@PersistenceContext(name = "academy")
	private EntityManager entity;

	// Metodo Atualizar
	public void atualizar(DadosPessoais pessoa) {
		entity.merge(pessoa);
	}

	// Metodo Remover
	public void remove(DadosPessoais pessoa) {
		entity.remove(entity.merge(pessoa));
	}

	public DadosPessoais getPessoa(Long id) {
		DadosPessoais pessoa = entity.find(DadosPessoais.class, id);
		return pessoa;

	}

	// Listar todos os Pessoas
	public List<DadosPessoais> getPessoas() {
		CriteriaBuilder cb = entity.getCriteriaBuilder();
		CriteriaQuery<DadosPessoais> cq = cb.createQuery(DadosPessoais.class);
		Root<DadosPessoais> from = cq.from(DadosPessoais.class);
		CriteriaQuery<DadosPessoais> select = cq.select(from);
		List<DadosPessoais> pessoas = entity.createQuery(select).getResultList();
		return pessoas;
	}

	// Pesquisa por nome (case sensitive)
	public List<DadosPessoais> pesqBeanNome(String nomePesq) {
		CriteriaBuilder cb = entity.getCriteriaBuilder();
		CriteriaQuery<DadosPessoais> cq = cb.createQuery(DadosPessoais.class);
		Root<DadosPessoais> from = cq.from(DadosPessoais.class);
		CriteriaQuery<DadosPessoais> select = cq.select(from).where(
				cb.like(from.<String> get("nome"), "%" + nomePesq + "%"));
		List<DadosPessoais> funcs = entity.createQuery(select).getResultList();
		return funcs;
	}

	// Metodo Salvar
	public void salvar(DadosPessoais pessoa) {
		entity.persist(pessoa);
	}

}
